Operating systems contain features that collect information that can aid in improving the operating system or applications that execute on the operating system. For example, the WINDOWS® operating system available from Microsoft Corporation of Redmond, Wash., USA, contains an error reporting service. When the operating system detects a problem with an application, the operating system may offer a user of a computer on which the application was running an opportunity to send a report of the error. If the user consents, data characterizing operation of the computer leading up to the crash may be sent to a server.
The report may contain information relating to execution state of the computer or operating system at the time the error occurred. For example, the report may identify information about the last instruction executed within a process at the time the error occurred. Additionally, some components of an operating system may be instrumented with “hooks” that make an entry in a log file whenever those components are called. All or portions of this log file may be used as part of an error report to provide information about events on the computer leading up to the error.
At the server, reports received from multiple computing devices may be aggregated and studied to identify operating scenarios that give rise to problems. These problems can then be corrected, improving the overall usefulness of the operating system for executing applications.
Operating systems may also include a feature to collect information on usage of software components. To collect this information, software components may be “instrumented.” At various locations within software, a function or other mechanism is inserted so that, when that instrumentation point is reached during execution of the software, the function logs an event. Log files created on multiple computers can also be collected at a server. By analyzing the logged events in these files, information useful in making decision about maintenance or development of software may be learned. For example, analysis of the log files may indicate the frequency of use of specific software components or specific functions of those components.